#include <iostream>
#include <memory>


class Test
{
public:
    Test()
    {
        std::cout<<"构造函数\n";
    }
    ~Test()
    {
        std::cout<<"析构函数\n";
    }
    void show()
    {
        std::cout<<"123465\n";
    }
};



int main()
{
    std::shared_ptr<Test> p = std::make_shared<Test>();
    std::cout<<p.use_count()<<std::endl;
    //共享指针的附庸,不会引起引用计数器的变化
    std::weak_ptr<Test> p1 = p;
    p1.lock()->show();//会返回一个指向该对象的共享指针,如果该对象已经释放，则返回空指针
    std::cout<<p.use_count()<<std::endl;
    return 0;
}